#ifndef _FILESYSTEM_H
#define _FILESYSTEM_H

#include <cnix/types.h>

struct inode;

struct filesystem{
	BOOLEAN (*init)(struct super_block *, dev_t);
	void (*free)(struct super_block *);
	BOOLEAN (*iread)(struct inode *, dev_t, ino_t);
	BOOLEAN (*iwrite)(struct inode *, dev_t, ino_t);
	BOOLEAN (*ialloc)(struct super_block *, struct inode *, mode_t);
	void (*ifree)(struct super_block *, ino_t);
	unsigned long (*balloc)(struct super_block *);
	void (*bfree)(struct super_block *, unsigned long);
	int (*statfs)(struct super_block *, struct statfs *);
};

#endif
